package si.yun.service;

import org.apache.ibatis.annotations.Param;
import si.yun.entity.*;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @program: SiYunClass
 * @description: 人事功能业务接口
 * @author: 崔晓晨
 * @create: 2021-07-28 20:48
 **/
public interface PersonnelService {
    //获取期间内申请人员统计信息
    PerCount selPerTab(int durDate);
    //获取用户统计量
    List<Integer> selUserEcharts();
    //查询用户的数据展示
    PerCount selUserNum();
    //获取用户列表
    List<SyBeforeUser> selUserTable(SyBeforeUser beforeUser);
    //添加停用的用户
    int addClosure(SyClosure closure);
    //查询单个用户的详细信息
    SyBeforeUserVo selUserInfo(int userId);
    //查询单个后台用户的详细信息
    SyUser selBackUserInfo(int userId);
    //编译用户信息 ( 不能编译用户的学习时长  和 交易金额 以及 账号创建时间)
    int updSelUser(SyBeforeUser beforeUser);
    //查询封号用户列表
    List<SyClosure> selClosureUserTable(SyClosure closure);
    //解封用户 改变封号列表信息
    int updClosure(SyClosure closure);
    //删除停用后的封停日志
    int delBeforeStatus(int id);
    //查询进思用户列表的详细数据
    List<PerUserListThink> selThinkUserTable(PerUserListThink userThink);
    //查看进思用户的详细信息
    PerUserListThink selUserThinkIndex(int developmentId);
    //上传图片文件 更换头像
    int updImg(int developmentId, String newName, int userId);
    //编译进思用户的基本信息
    int updThinkInfo(PerUserListThink perUserListThink);
    //查询优惠券列表
    List<OperCoupons> selAwayListTab();
    //添加 赠送优惠券的优惠券记录
    int addUserCoupons(List<Integer> userId, List<Integer> couponId);
    //添加进思用户列表
    int addThinkUserInfo(SyUserDevelopment development);
    //添加后端操作日志
    int addOperationLog(SyOperationLog log);
    //添加封号操作日志
    int addClosureLog(SyClosureLog syClosureLog);
    //查询封号日志表
    List<PerClosureLog> selClosureLog(PerClosureLog log);
    //删除封号日志
    int delClosureLog(int id);
    //查看操作日志数据
    List<SyOperationLog> selOperationLog(SyOperationLog operationLog);
    //删除操作日志
    int delOperationLog(int id);
    //获取非进思用户列表
    List<SyBeforeUser> selNotThinkUser(SyBeforeUser beforeUser);
    //查看前台用户反馈列表
    List<PerFeedback> selFeedbackList(PerFeedback feedback);
    // 查询待审核 已受理的数量（反馈列表）
    PerFeedback selAduFeedNum();
    //更新已受理状态
    int updFeedback(Integer feedbackStatus, Integer feedbackId);
    //查看受理详情
    PerOperationLog selReceiveInfo(String tablename, String remark);
    //删除反馈信息
    int delFeedback(Integer feedbackId);
    //查询无消费记录用户列表
    List<SyBeforeUser> selNotSpendUser(SyBeforeUser beforeUser);
    //查询部门数据管理列表
    List<PerDept> selDeptList(PerDept dept);
    //更新部门启用 停用状态
    int updDeptStatus(Integer deptId, Integer deptStatus);
    //修改部门信息
    int updDeptInfo(SyDept dept);
    //添加部门
    int addDeptInfo(PerDept dept);
    //删除部门信息
    int delDeptInfo(Integer deptId);
    //获取部门信息（树形）
    List<PerDeptZtreeNode> selDeptName();
    //获取后台管理员信息
    List<PerBackUser> selBackUserList(PerBackUser user);
    //管理后台管理员账号的账户是否启用
    int updBackUserEnabled(Integer userId, Integer enabled);
    //查找所有封停用户
    List<PerClosureUser> selClosureUser();
    //更改用户账号状态   封停用户账号
    int updBackUserStatus(Integer userId, Integer enabled, Integer status);
    //更新后台管理员信息
    int updBackUserInfo(PerBackUser user);
    //更新后台管理员头像
    int updBackUserImg(String newName, int userId);
    //导入后台管理员
    int importExcelUser(List<PerBackUser> syUsers);
    //添加后台管理人员
    int addBackUserInfo(PerBackUser backUser);
    // 获取今年每月新增的用户数量（用户）
    List<Integer> selBeforeNum();
    //获取今年每月新增的用户数量（管理员）
    List<Integer> selBackNum();
    //获取人员登录总次数 成功次数（前端 ，管理端）
    UserMonth selLoginNums();
    //获取某一时间段内登录的数据(前)
    List<Integer> getLoginTime();
    //获取某一时间段内登录的数据(管)
    List<Integer> getLoginTimes();
    //查询不同的反馈类型下不同的反馈结果数据
    PerFeedData selFeedDatas(Integer feedbackType);
    //查询反馈的总数
    PerFeedData selFeedBackNums();
    //查询不同类型下的课程视频播放量
    List<PerCourseLook> selCourseLookNum();
    //查询审核列表数据
    List<Map<String,Object>> selAuditList(Map<String, Object> m);
    //审核列表数据通过
    int updAuditUser(Map<String, Object> m);
    //审核列表数据删除
    int delAuditUser(Map<String, Object> m);
    //审核列表数据查看详情
    Map<String, Object> selAuditUser(String id);
    //前台用户登录日志
    List<Map<String,Object>> selReceptionLoginLog(Map<String, Object> m);
    //删除前台用户登录日志
    int delReceptionLoginLog(String id);
    //后台用户登录日志
    List<Map<String, Object>> selBackstageLoginLog(Map<String, Object> m);

    //查询不同类型下的课程视频收藏量
    List<Map<String,Object>> selCourseCollection();
    //查询不同类型下的课程视频点赞量
    List<Map<String, Object>> selCoursePraise();
    //查询不同类型下的微圈视频收藏量
    List<Map<String, Object>> selMicrocircleCollection();
    //查询不同类型下的微圈视频点赞量
    List<Map<String, Object>> selMicroCirclePraise();
    //查询不同类型下的微圈视频预览量统计
    List<Map<String, Object>> selMicrocirclePreview();

    //查询不同类型下的微圈商品收藏量统计
    List<Map<String, Object>> selCommodityCollection();
    //查询不同类型下的商品点赞量统计
    List<Map<String, Object>> selProductLikes();
    //查询不同类型下的商品订单量统计
    List<Map<String, Object>> selCommodityOrder(@Param("money") double money);
    //权限
    Map<String, Object> selJurisdiction(Integer userId);
    //修改权限
    int addRoleData(Integer value,Boolean boo,Integer userId);
    //获取客服列表数据
    List<Map<String, Object>> selSmartAI();
    //获取客服接待人数
    Map<String, Integer> selReceptionNum();
    //删除客服聊天记录
    int delSmartAI(Integer id);
    //获取客服列表查看记录数据
    List<Map<String, Object>> selRecord(Integer id);
    //获取当前客服的接待记录
    Map<String, Object> selReception(Integer id);
    //查询搜索统计量
    List<SySearch> selSearchNums();
    int selSumTips();



    /*
     * @Description : 根据指定时间，查询不同类型下的课程视频收藏量
     * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @Date : 2021/11/30 9:58
     */
    List<Map<String,Object>> selCourseCollection2(String date);

    /*
     * @Description : 根据指定时间，查询不同类型下的微圈商品收藏量统计
     * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @Date : 2021/11/30 10:42
     */
    List<Map<String, Object>> selCommodityCollection2(String date);


    /*
    * @Description : 根据指定时间，查询不同类型下的微圈收藏量
    * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
    * @Date : 2021/11/30 11:00
    */
    List<Map<String, Object>> selMicrocircleCollection2(String date);


    /*
     * @Description : 根据指定时间，查询不同类型下的课程视频点赞量
     * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @Date : 2021/11/30 11:37
     */
    List<Map<String, Object>> selCoursePraise2(String date);


    /*
     * @Description :  根据指定时间，查询不同类型下的商品点赞量统计
     * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @Date : 2021/11/30 11:55
     */
    List<Map<String, Object>> selProductLikes2(String date);


    /*
     * @Description : 根据指定时间，查询不同类型下的微圈点赞量
     * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @Date : 2021/11/30 13:35
     */
    List<Map<String, Object>> selMicroCirclePraise2(String date);


    /*
     * @Description : 用户观看视频
     * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @Date : 2021/12/1 14:10
     */
    List<Map<String,Object>> selUserVideo2(Integer userId);
    //外部人员审核列表通过驳回返回信息
    int upConversotion(Map<String, Object> m);



    /*
     * @Description : 用户收藏
     * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @Date : 2021/12/6 9:09
     */
    List<Map<String,Object>> selCollectionCourse(Integer userId,Integer type);


    /*
    * @Description : 用户收藏商品
    * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
    * @Date : 2021/12/6 9:58
    */
    List<Map<String,Object>> selCollectionProduct(Integer userId,Integer type);


    /*
    * @Description : 用户收藏微圈
    * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
    * @Date : 2021/12/6 10:24
    */
    List<Map<String,Object>> selCollectionForum(Integer userId,Integer type);

    /*
     * @Description : 用户点赞课程
     * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @Date : 2021/12/6 10:52
     */
    List<Map<String,Object>> selLikeCourse(Integer userId,Integer type);
    
    
    /*
     * @Description : 用户点赞商品
     * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @Date : 2021/12/6 11:03
     */
    List<Map<String,Object>> selLikeProduct(Integer userId,Integer type);
    
    /*
     * @Description : 用户点赞微圈
     * @Return : java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     * @Date : 2021/12/6 11:24
     */
    List<Map<String,Object>> selLikeForum(Integer userId,Integer type);



    /*
    * @Description : 查询用户账号
    * @Return : java.util.List<java.lang.Integer>
    * @Date : 2021/12/17 15:45
    */
    List<Map<String,Object>> selAccount();




    /**
     *  @Decriptron 查询版本
     * @Date:2021/12/27 11:21
     * @Return:
     */
    List<Map<Object,Object>> SelVerion(Integer VersionCode,String createDate,String createUser);

    /**
     *  @Decriptron 查询详情
     * @Date:2021/12/28 20:24
     * @Return:java.util.List<java.util.Map<java.lang.Object,java.lang.Object>>
     */
    List<Map<Object,Object>> queryVersion(Integer id);

    /**
     *  @Decriptron 添加版本
     * @Date:2021/12/28 20:24
     * @Return:int
     */
    int AddVersion(Map<String, Object> map);








}
